package top.truism.array;

/**
 * 移除数组中指定的元素
 */
public class RemoveElement {

    public int removeElement(int[] arr, int element) {
        int len = arr.length;
        while (true) {
            boolean findVal = false;
            for (int i = 0; i < len; i++) {
                if(arr[i] == element) {
                    findVal = true;
                    //移除索引为i位置的元素
                    len = removeElementInIndex(arr, len, i);
                    break;
                }
            }
            if(!findVal) {
                break;
            }
        }
        return len;
    }

    /**
     * 移除指定index位置的元素
     * @param arr
     * @param len
     * @param index
     */
    private int removeElementInIndex(int[] arr, int len, int index) {

        for (int i = index + 1; i < len; i++) {
            arr[i-1] = arr[i];
        }
        return len-1;

    }


    public int removeElementWithOn(int[] arr, int val) {
        int len = 0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] != val) {
                arr[len++] = arr[i];
            }
        }
        return len;
    }

}
